home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Installer SDK Cornucopia 1.1.2 / DeveloperInterfaces / CIncludes / InstallerScript.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-12  |  13.2 KB  |  472 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        InstallerScript.h
  3.  
  4.      Contains:    Interface file for
  5.  
  6.      Version:    Technology:    Installer 4.5
  7.                  Package:    4.5
  8.  
  9.      Copyright:    © 1984-1998 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __INSTALLERSCRIPT__
  21. #define __INSTALLERSCRIPT__
  22.  
  23.  
  24. #ifndef __FILES__
  25. #include <Files.h>
  26. #endif
  27. /*    #include <Types.h>                                            */
  28. /*        #include <ConditionalMacros.h>                            */
  29. /*    #include <MixedMode.h>                                        */
  30. /*    #include <OSUtils.h>                                        */
  31. /*        #include <Memory.h>                                        */
  32. /*        #include <Patches.h>                                    */
  33. /*            #include <Kernel.h>                                    */
  34. /*                #include <Errors.h>                                */
  35. /*                #include <MachineExceptions.h>                    */
  36. /*                #include <Timing.h>                                */
  37. /*            #include <OrderedItems.h>                            */
  38. /*    #include <Finder.h>                                            */
  39.  
  40. #ifndef __MEMORY__
  41. #include <Memory.h>
  42. #endif
  43.  
  44. #ifndef __MIXEDMODE__
  45. #include <MixedMode.h>
  46. #endif
  47.  
  48. #ifndef __TYPES__
  49. #include <Types.h>
  50. #endif
  51.  
  52. #ifdef __cplusplus
  53. extern "C" {
  54. #endif
  55.  
  56. #if PRAGMA_ALIGN_SUPPORTED
  57. #pragma options align=mac68k
  58. #endif
  59.  
  60. #if PRAGMA_IMPORT_SUPPORTED
  61. #pragma import on
  62. #endif
  63.  
  64.  
  65. enum {
  66.     kMaxNumOfFunctionParams        = 12
  67. };
  68.  
  69. struct CallBackPBRec {
  70.     long                            fSelector;
  71.     long                            fResult;
  72.     long                            fParam[kMaxNumOfFunctionParams];
  73. };
  74. typedef struct CallBackPBRec CallBackPBRec;
  75.  
  76. typedef CallBackPBRec *CallBackPBPtr;
  77.  
  78. typedef long (*InstallerCallBackProcPtr)(CallBackPBPtr theCallBackPB);
  79.  
  80. #if GENERATINGCFM
  81. typedef UniversalProcPtr InstallerCallBackUPP;
  82. #else
  83. typedef InstallerCallBackProcPtr InstallerCallBackUPP;
  84. #endif
  85.  
  86. enum {
  87.     uppInstallerCallBackProcInfo = kCStackBased
  88.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  89.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(CallBackPBPtr)))
  90. };
  91.  
  92. #if GENERATINGCFM
  93. #define NewInstallerCallBackProc(userRoutine)        \
  94.         (InstallerCallBackUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppInstallerCallBackProcInfo, GetCurrentArchitecture())
  95. #else
  96. #define NewInstallerCallBackProc(userRoutine)        \
  97.         ((InstallerCallBackUPP) (userRoutine))
  98. #endif
  99.  
  100. #if GENERATINGCFM
  101. #define CallInstallerCallBackProc(userRoutine, theCallBackPB)        \
  102.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppInstallerCallBackProcInfo, (theCallBackPB))
  103. #else
  104. #define CallInstallerCallBackProc(userRoutine, theCallBackPB)        \
  105.         (*(userRoutine))((theCallBackPB))
  106. #endif
  107.  
  108. /*****************************************************************************************************/
  109. /**/
  110. /*                                        Rule Function*/
  111. /**/
  112. /**/
  113. /*    Code Resource Calling Interface:*/
  114. /**/
  115. /*        long YourRuleFunction( RuleFunctionPBPtr );*/
  116. /**/
  117. /*****************************************************************************************************/
  118.  
  119. enum {
  120.     kTRUERuleFunctionResult        = 1,
  121.     kFALSERuleFunctionResult    = 0
  122. };
  123.  
  124. struct RuleFunctionPBRec {
  125.     InstallerCallBackUPP            fCallBackProcPtr;
  126.     short                            fTargetVRefNum;
  127.     long                            fTargetFolderDirID;
  128.     short                            fSystemVRefNum;
  129.     long                            fSystemBlessedDirID;
  130.     long                            fRefCon;
  131. };
  132. typedef struct RuleFunctionPBRec RuleFunctionPBRec;
  133.  
  134. typedef RuleFunctionPBRec *RuleFunctionPBPtr;
  135.  
  136. /*****************************************************************************************************/
  137. /**/
  138. /*                                        Action Atom Function*/
  139. /**/
  140. /**/
  141. /*    Code Resource Calling Interface:*/
  142. /**/
  143. /*        long YourActionAtomFunction( ActionAtom2PBPtr );*/
  144. /**/
  145. /*****************************************************************************************************/
  146.  
  147. enum {
  148.     before,
  149.     after,
  150.     cleanUpCancel
  151. };
  152.  
  153. typedef SInt8 InstallationStage;
  154.  
  155.  
  156. enum {
  157.     kActionAtomResultFatalError    = -1,
  158.     kActionAtomResultContinue    = 0,
  159.     kActionAtomResultCancel        = 1
  160. };
  161.  
  162. typedef long ActionAtomResult;
  163.  
  164. struct ActionAtom2PBRec {
  165.     InstallationStage                fMessageID;
  166.     SInt8                            padByte;
  167.     Handle                            fStaticDataHdl;
  168.     InstallerCallBackUPP            fCallBackProcPtr;
  169.     short                            fTargetVRefNum;
  170.     long                            fTargetFolderDirID;
  171.     short                            fSystemVRefNum;
  172.     long                            fSystemBlessedDirID;
  173.     long                            fRefCon;
  174.     Boolean                            fDoingInstall;
  175.     Boolean                            fDidLiveUpdate;
  176.     long                            fInstallerTempDirID;
  177. };
  178. typedef struct ActionAtom2PBRec ActionAtom2PBRec;
  179.  
  180. typedef ActionAtom2PBRec *ActionAtom2PBPtr;
  181.  
  182. /*****************************************************************************************************/
  183. /**/
  184. /*                                        Version Compare Function*/
  185. /**/
  186. /**/
  187. /*    Code Resource Calling Interface:*/
  188. /**/
  189. /*        long YourComputeVersionFunctionSetupFunction( ComputeVersionPBPtr );*/
  190. /**/
  191. /*    Return the version in BCD format.  For example:  ver 2.0.1 final release is 0x02018000*/
  192. /**/
  193. /*****************************************************************************************************/
  194. struct ComputeVersionPB {
  195.     InstallerCallBackUPP            fCallBackProcPtr;
  196. };
  197. typedef struct ComputeVersionPB ComputeVersionPB;
  198.  
  199. typedef ComputeVersionPB *ComputeVersionPBPtr;
  200.  
  201. /*****************************************************************************************************/
  202. /**/
  203. /*                                        Target Search Function*/
  204. /**/
  205. /**/
  206. /*    Code Resource Calling Interface:*/
  207. /**/
  208. /*        SearchResult YourTargetSearchFunction( SearchProcedurePBPtr );*/
  209. /**/
  210. /*****************************************************************************************************/
  211.  
  212. enum {
  213.     kFatalSearchError            = -1,
  214.     kSearchSuccessful            = 0,
  215.     kCancelSearchAndInstallation = 1
  216. };
  217.  
  218. typedef SInt8 SearchResult;
  219.  
  220. struct FoundFileRec {
  221.     short                            vRefNum;
  222.     long                            parID;
  223.     Str63                            name;
  224.     short                            fReferenceID;
  225. };
  226. typedef struct FoundFileRec FoundFileRec;
  227.  
  228. typedef FoundFileRec *FoundFileArrayPtr;
  229.  
  230. typedef FoundFileArrayPtr *FoundFileArrayHdl;
  231.  
  232. struct SearchProcedurePBRec {
  233.     InstallerCallBackUPP            fCallBackProcPtr;
  234.     short                            fTargetVRefNum;
  235.     long                            fTargetFolderDirID;
  236.     short                            fSystemVRefNum;
  237.     long                            fSystemBlessedDirID;
  238.     long                            fRefCon;
  239.     OSType                            fFileSpecType;
  240.     OSType                            fFileSpecCreator;
  241.     long                            fFileSpecCrDate;
  242.     Str255                            fFileSpecPath;
  243.     FoundFileArrayHdl                fFoundFilesArray;
  244. };
  245. typedef struct SearchProcedurePBRec SearchProcedurePBRec;
  246.  
  247. typedef SearchProcedurePBRec *SearchProcedurePBPtr;
  248.  
  249. /*****************************************************************************************************/
  250. /**/
  251. /*                                        Setup Function*/
  252. /**/
  253. /**/
  254. /*    Code Resource Calling Interface:*/
  255. /**/
  256. /*        long YourSetupFunction( EnvironmentSetupPBPtr );*/
  257. /**/
  258. /*****************************************************************************************************/
  259.  
  260. enum {
  261.     kContinueInstallerSetup        = 0,
  262.     kQuitInstallerNow            = -1
  263. };
  264.  
  265. struct EnvironmentSetupPB {
  266.     InstallerCallBackUPP            fCallBackProcPtr;
  267.     FSSpec                            fTargetFSSpec;
  268.     short                            fSystemVRefNum;
  269. };
  270. typedef struct EnvironmentSetupPB EnvironmentSetupPB;
  271.  
  272. typedef EnvironmentSetupPB *EnvironmentSetupPBPtr;
  273.  
  274. /*****************************************************************************************************/
  275. /**/
  276. /*                                        Atom Extender Function*/
  277. /**/
  278. /**/
  279. /*    Code Resource Calling Interface:*/
  280. /**/
  281. /*        long YourAtomExtenderFunction( ExtenderPBPtr );*/
  282. /**/
  283. /*****************************************************************************************************/
  284.  
  285. enum {
  286.     kFileAtomDataFork,
  287.     kFileAtomRsrcFork,
  288.     kFileAtomRsrcForkFromDataFork,
  289.     kRsrcAtom,
  290.     kFontAtom,
  291.     kActionAtom
  292. };
  293.  
  294. typedef SInt8 DataType;
  295.  
  296.  
  297. enum {
  298.     kFatalError                    = -1,
  299.     kContinueAsNormal            = 0,
  300.     kCancelInstallation            = 1,
  301.     kCopiedData
  302. };
  303.  
  304. typedef SInt16 ExtenderResultCode;
  305.  
  306.  
  307. enum {
  308.     kInitialize,
  309.     kBeforePart,
  310.     kAfterPart,
  311.     kSuccess,
  312.     kCancel
  313. };
  314.  
  315. typedef SInt8 ExtenderMessageID;
  316.  
  317. struct EnvironsHeaderRec {
  318.     ExtenderMessageID                fMessageID;
  319.     SInt8                            pad1;
  320.     Handle                            fStaticDataHdl;
  321.     InstallerCallBackUPP            fCallBackProcPtr;
  322.     short                            fTargetVRefNum;
  323.     long                            fTargetFolderDirID;
  324.     short                            fSystemVRefNum;
  325.     long                            fSystemBlessedDirID;
  326.     long                            fRefCon;
  327.     DataType                        fDataType;
  328.     SInt8                            pad2;
  329. };
  330. typedef struct EnvironsHeaderRec EnvironsHeaderRec;
  331.  
  332. struct CopyHeaderRec {
  333.     FSSpec                            fSourceFile;
  334.     FSSpec                            fTargetFile;
  335.     long                            fTotalTargetSize;
  336.     long                            fTargetPosStart;
  337.     long                            fTargetPartSize;
  338.     long                            fSourcePartSize;
  339.     long                            fInstallerTempDirID;
  340. };
  341. typedef struct CopyHeaderRec CopyHeaderRec;
  342.  
  343. struct BasicCopyRec {
  344.     EnvironsHeaderRec                fEnvironmentHeader;
  345.     CopyHeaderRec                    fCopyPBHeader;
  346. };
  347. typedef struct BasicCopyRec BasicCopyRec;
  348.  
  349. struct RsrcCopyRec {
  350.     EnvironsHeaderRec                fEnvironmentHeader;
  351.     CopyHeaderRec                    fCopyPBHeader;
  352.     ResType                            fSourceRsrcType;
  353.     short                            fSourceRsrcID;
  354.     ResType                            fTargetRsrcType;
  355.     short                            fTargetRsrcID;
  356.     Str255                            fTargetRsrcName;
  357.     short                            fTargetRsrcAttrs;
  358. };
  359. typedef struct RsrcCopyRec RsrcCopyRec;
  360.  
  361. struct FontCopyRec {
  362.     EnvironsHeaderRec                fEnvironmentHeader;
  363.     CopyHeaderRec                    fCopyPBHeader;
  364.     ResType                            fSourceFontRsrcType;
  365.     short                            fSourceFontRsrcID;
  366.     ResType                            fTargetFontRsrcType;        /* FONT, NFNT, or sfnt*/
  367.     short                            fTargetFontRsrcID;
  368.     Str255                            fTargetFontRsrcName;
  369.     short                            fTargetFontRsrcAttrs;
  370.     Str255                            fFamilyName;
  371.     short                            fFamilyID;
  372.     short                            fFontSize;
  373.     short                            fFontStyle;
  374. };
  375. typedef struct FontCopyRec FontCopyRec;
  376.  
  377. union ExtenderPBRec {
  378.     BasicCopyRec                    fBasicPBRec;
  379.     BasicCopyRec                    fFileCopyPBRec;
  380.     RsrcCopyRec                        fRsrcCopyPBRec;
  381.     FontCopyRec                        fFontCopyPBRec;
  382. };
  383. typedef union ExtenderPBRec ExtenderPBRec;
  384.  
  385. typedef ExtenderPBRec *ExtenderPBPtr;
  386.  
  387. /*****************************************************************************************************/
  388. /**/
  389. /*                                        Callback Glue Routines*/
  390. /**/
  391. /*****************************************************************************************************/
  392. /* Memory Related*/
  393. extern pascal Handle INewHandle(InstallerCallBackUPP pCallBackProcPtr, unsigned long newHandleSize);
  394. extern pascal void IDisposHandle(InstallerCallBackUPP pCallBackProcPtr, Handle storageHandle);
  395. extern pascal void IHLock(InstallerCallBackUPP pCallBackProcPtr, Handle storageHandle);
  396. extern pascal void IHUnLock(InstallerCallBackUPP pCallBackProcPtr, Handle storageHandle);
  397. /* Atom Extender Related*/
  398. extern pascal OSErr ReadSourceData(InstallerCallBackUPP pCallBackProcPtr, long *count, Ptr storagePtr);
  399. extern pascal OSErr WriteTargetData(InstallerCallBackUPP pCallBackProcPtr, long count, Ptr storagePtr);
  400. extern pascal OSErr ReadTargetData(InstallerCallBackUPP pCallBackProcPtr, long *count, Ptr storagePtr);
  401. extern pascal OSErr SetTargetDataPos(InstallerCallBackUPP pCallBackProcPtr, short positionMode, long positionOffset);
  402. extern pascal OSErr GetTargetDataPos(InstallerCallBackUPP pCallBackProcPtr, long *positionOffset);
  403. extern pascal OSErr GetTargetDataEOF(InstallerCallBackUPP pCallBackProcPtr, long *theLength);
  404. extern pascal OSErr SetSourceDataPos(InstallerCallBackUPP pCallBackProcPtr, short positionMode, long positionOffset);
  405. extern pascal OSErr GetSourceDataPos(InstallerCallBackUPP pCallBackProcPtr, long *positionOffset);
  406. extern pascal OSErr GetSourceDataEOF(InstallerCallBackUPP pCallBackProcPtr, long *theLength);
  407. /* Action Atom Related*/
  408. extern pascal OSErr MakeFSSpecFromFileSpecID(InstallerCallBackUPP pCallBackProcPtr, short pFileSpecID, FSSpec *pFSSpecPtr, StringHandle *pExtraPathInfo);
  409. extern pascal void SuspendWaitCursor(InstallerCallBackUPP pCallBackProcPtr);
  410. extern pascal void ResumeWaitCursor(InstallerCallBackUPP pCallBackProcPtr);
  411. extern pascal void IncrementStatusBar(InstallerCallBackUPP pCallBackProcPtr, short pIncrementAmount);
  412. extern pascal Boolean IsUserInteractionAllowed(InstallerCallBackUPP pCallBackProcPtr);
  413. extern pascal OSErr InstallerFindSpecialFolder(InstallerCallBackUPP pCallBackProcPtr, short pVRefNum, OSType pfolderType, Boolean pCreateFolder, short *pFoundVRefNum, long *pFoundDirID);
  414. extern pascal long GetBoxFlagOverwrite(InstallerCallBackUPP pCallBackProcPtr);
  415. extern pascal Boolean IsLaunchedByUpgrader(InstallerCallBackUPP pCallBackProcPtr);
  416. extern pascal Boolean IsParasiteScript(InstallerCallBackUPP pCallBackProcPtr);
  417. extern pascal void RegisterScriptAction(InstallerCallBackUPP pCallBackProcPtr, short actionClassID, short actionIdentifier, void *param0, void *param1, void *param2, void *param3, void *resultPtr);
  418. /*****************************************************************************************************/
  419. /**/
  420. /*                                        Obsolete Interfaces*/
  421. /**/
  422. /*****************************************************************************************************/
  423. /* Old Action Atom Parameter Block*/
  424. struct AAPBRec {
  425.     short                            targetVRefNum;
  426.     long                            blessedDirID;
  427.     long                            aaRefCon;
  428.     Boolean                            doingInstall;
  429.     InstallationStage                whichStage;
  430.     Boolean                            didLiveUpdate;
  431.     SInt8                            padByte;
  432.     long                            installerTempDirID;
  433. };
  434. typedef struct AAPBRec AAPBRec;
  435.  
  436. typedef AAPBRec *AAPBRecPtr;
  437.  
  438. /* Action Handler Parameter Block*/
  439. struct ActionHandlerPB {
  440.     Handle                            fStaticDataHdl;
  441.     InstallerCallBackUPP            fCallBackProcPtr;
  442.     short                            fTargetVRefNum;
  443.     long                            fTargetFolderDirID;
  444.     short                            fSystemVRefNum;
  445.     long                            fSystemBlessedDirID;
  446.     short                            fActionClassID;
  447.     short                            fActionIdentifier;
  448.     void                            *fParam0;
  449.     void                            *fParam1;
  450.     void                            *fParam2;
  451.     void                            *fParam3;
  452.     void                            *fResultPtr;
  453. };
  454. typedef struct ActionHandlerPB ActionHandlerPB;
  455.  
  456. typedef ActionHandlerPB *ActionHandlerPBPtr;
  457.  
  458.  
  459. #if PRAGMA_IMPORT_SUPPORTED
  460. #pragma import off
  461. #endif
  462.  
  463. #if PRAGMA_ALIGN_SUPPORTED
  464. #pragma options align=reset
  465. #endif
  466.  
  467. #ifdef __cplusplus
  468. }
  469. #endif
  470.  
  471. #endif /* __INSTALLERSCRIPT__ */
  472.